TRANSFORM û przyk│ad instrukcji
W tym przyk│adzie klauzula TRANSFORM jΩzyka SQL jest u┐yta do utworzenia kwerendy krzy┐owej pokazuj╣cej liczbΩ zam≤wie± zebranych przez ka┐dego pracownika w ka┐dym kwartale 1994 roku. Do uruchomienia tej procedury potrzebna jest funkcja SQLTRANSFORMOutput.
Sub TransformX1()
Dim dbs As Database
Dim strSQL As String
Dim qdfTRANSFORM As QueryDef
strSQL = "PARAMETERS prmRok SHORT; TRANSFORM " _
& "Count(NrZam≤wienia) " _
& "SELECT ImiΩ & "" "" & Nazwisko AS " _
& "Pe│neNazwisko FROM Pracownicy " _
& "INNER JOIN Zam≤wienia " _
& "ON Pracownicy.NrPracownika = " _
& "Zam≤wienia.NrPracownika WHERE DatePart " _
& "(""yyyy"", DataZam≤wienia) = [prmRok] "
strSQL = strSQL & "GROUP BY ImiΩ & " _
& """ "" & Nazwisko " _
& "ORDER BY ImiΩ & "" "" & Nazwisko " _
& "PIVOT DatePart(""q"", DataZam≤wienia)"
' Zmodyfikuj ten wiersz tak, by £cie┐ka wskazywa│a
' na rzeczywist╣ bazΩ danych Northwind.
Set dbs = OpenDatabase("Northwind.mdb")
Set qdfTRANSFORM = dbs.CreateQueryDef _
("", strSQL)
SQLTRANSFORMOutput qdfTRANSFORM, 1994
dbs.Close
End Sub
W tym przyk│adzie klauzula TRANSFORM jΩzyka SQL s│u┐y do utworzenia nieco bardziej skomplikowanej kwerendy krzy┐owej pokazuj╣cej ca│kowit╣ warto£µ zam≤wie± zebranych przez ka┐dego pracownika w ka┐dym kwartale 1994 roku. Do uruchomienia procedury potrzebna jest funkcja SQLTRANSFORMOutput.
Sub TransformX2()
Dim dbs As Database
Dim strSQL As String
Dim qdfTRANSFORM As QueryDef
strSQL = "PARAMETERS prmYear SMALLINT; TRANSFORM " _
& "Sum(Subtotal) SELECT ImiΩ & "" """ _
& "& Nazwisko AS Pe│neNazwisko " _
& "FROM Pracownicy INNER JOIN " _
& "(Zam≤wienia INNER JOIN " _
& "[CzΩ£ciowe zam≤wienia] " _
& "ON Zam≤wienia.NrZam≤wienia = " _
& "[CzΩ£ciowe zam≤wienia].NrZam≤wienia) " _
& "ON Pracownicy.NrPracownika = " _
& "Zam≤wienia.NrPracownika WHERE DatePart" _
& "(""yyyy"", DataZam≤wienia) = [prmRok] "
strSQL = strSQL & "GROUP BY ImiΩ & "" """ _
& "& Nazwisko " _
& "ORDER BY ImiΩ & "" "" & Nazwisko " _
& "PIVOT DatePart(""q"",DataZamowienia)"
' Zmodyfikuj ten wiersz tak, by £cie┐ka wskazywa│a
' na rzeczywist╣ bazΩ danych Northwind.
Set dbs = OpenDatabase("Northwind.mdb")
Set qdfTRANSFORM = dbs.CreateQueryDef _
("", strSQL)
SQLTRANSFORMOutput qdfTRANSFORM, 1994
dbs.Close
End Sub
Function SQLTRANSFORMOutput(qdfTymcz As QueryDef, _
intRok As Integer)
Dim rstTRANSFORM As Recordset
Dim fldPΩtla As Field
Dim booPierwsze As Boolean
qdfTymcz.PARAMETERS!prmRok = intRok
Set rstTRANSFORM = qdfTymcz.OpenRecordset()
Debug.Print qdfTymcz.SQL
Debug.Print
Debug.Print , , "Kwarta│"
With rstTRANSFORM
booPierwsze = True
For Each fldPΩtla In .Fields
If booPierwsze = True Then
Debug.Print fldPΩtla.Name
Debug.Print , ;
booPierwsze = False
Else
Debug.Print , fldPΩtla.Name;
End If
Next fldPΩtla
Debug.Print
Do While Not .EOF
booPierwsze = True
For Each fldPΩtla In .Fields
If booPierwsze = True Then
Debug.Print fldPΩtla
Debug.Print , ;
booPierwsze = False
Else
Debug.Print , fldPΩtla;
End If
Next fldPΩtla
Debug.Print
.MoveNext
Loop
End With
End Function